x86: Initialize the affinity field after assigning the vector.
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 21 Oct 2009 15:07:37 +0000 (16:07 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 21 Oct 2009 15:07:37 +0000 (16:07 +0100)
To avoid strange output from debug-key "i", desc->affinity should
be the subset of the cfg->domain basically, so copy cfg->domain to
desc->affinity after assigning vector for the irq..

Signed-off-by: Xiantao Zhang <xiantao.zhang@intel.com>
xen/arch/x86/irq.c

index d4bf176d07498049d9483fa0ebfe766c33bdce09..510be8db125aa944684b3e92649472b87fd8d5d3 100644 (file)
@@ -419,13 +419,16 @@ int assign_irq_vector(int irq)
     int ret;
     unsigned long flags;
     struct irq_cfg *cfg = &irq_cfg[irq];
+    struct irq_desc *desc = irq_to_desc(irq);
     
     BUG_ON(irq >= nr_irqs || irq <0);
 
     spin_lock_irqsave(&vector_lock, flags);
     ret = __assign_irq_vector(irq, cfg, TARGET_CPUS);
-    if (!ret)
+    if (!ret) {
         ret = cfg->vector;
+        cpus_copy(desc->affinity, cfg->domain);
+    }
     spin_unlock_irqrestore(&vector_lock, flags);
     return ret;
 }